#ifndef stackH
#define stackH

#include<iostream.h>
#include<string.h>

#include"boggle.h"

using namespace std;

template<class typ>
class stack{         //Stacks are like a stack of bricks.  You add to
                     //the top and remove from the top.
public:
       stack();             //constructor

       stack(int size);     //super constructor where you can define the size of
                                //the stack array.
       bool full();             //returns true if the stack is full

       bool empty();            //returns true if the stack is empty.

       void push(typ x);    //puts an thing onto the top of the stack

       void pushmanychar(char *x);

       typ pop();           //takes a brick away and returns it

       char *getstringstack();

       void displaybottomup();   //print whats in the stack bottom up

       void displaytopdown();    //print whats in the stack top down.

       int count();

       void addtovictory(char *x);
private:
        int top;            //an integer reference showing us where the top is.
        typ *s;             //a pointer to something of type typ.  this will
        typ *accumulate;
        string *victorypilestack;
};


#endif
